package com.cicadamob.contact.api.http.dao;

import java.util.ArrayList;

import com.gmccgz.im.sdk.http.bean.MediaCardDetail;
import com.gmccgz.im.sdk.http.bean.UserCard;

public class PersonCenterRequest {

	private static final String MESSAGE_HEAD = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
	private static final String BR = "\n";

	public static String getEditPersonalCardRequest(String fromid, String imsi,
			String imei, String token, String messageId, String userId,
			String nickname, String mood_sign, String homepage, String location) {
		String signatureValue = "fromid:" + fromid + ",imsi:" + imsi + ",imei:"
				+ imei + ",token:" + token;
		StringBuilder sb = new StringBuilder(MESSAGE_HEAD + BR);
		sb.append("<request>");
		sb.append(BR);

		sb.append("<header>");
		sb.append(BR);
		sb.append("<signature>");
		sb.append(signatureValue);
		sb.append("</signature>");
		sb.append(BR);
		sb.append("<messageId>");
		sb.append(messageId == null ? "" : messageId);
		sb.append("</messageId>");
		sb.append(BR);
		sb.append("</header>");
		sb.append(BR);

		sb.append("<body>");
		sb.append(BR);
		sb.append("<userId>");
		sb.append(userId == null ? "" : userId);
		sb.append("</userId>");
		sb.append(BR);
		sb.append("<nickname>");
		sb.append(nickname == null ? "" : nickname);
		sb.append("</nickname>");
		sb.append(BR);
		sb.append("<moodSign>");
		sb.append(mood_sign == null ? "" : mood_sign);
		sb.append("</moodSign>");
		sb.append(BR);

		sb.append("<homepage>");
		sb.append(homepage == null ? "" : homepage);
		sb.append("</homepage>");
		sb.append(BR);

		sb.append("<location>");
		sb.append(location == null ? "" : location);
		sb.append("</location>");
		sb.append(BR);

		sb.append("</body>");
		sb.append(BR);

		sb.append("</request>");
		sb.append(BR);
		return sb.toString();
	}

	public static String getSynchroPersonalCardRequest(String fromid,
			String imsi, String imei, String token, String messageId,
			String mobile) {
		String signatureValue = "fromid:" + fromid + ",imsi:" + imsi + ",imei:"
				+ imei + ",token:" + token;
		StringBuilder sb = new StringBuilder(MESSAGE_HEAD + BR);
		sb.append("<request>");
		sb.append(BR);

		sb.append("<header>");
		sb.append(BR);
		sb.append("<signature>");
		sb.append(signatureValue);
		sb.append("</signature>");
		sb.append(BR);
		sb.append("<messageId>");
		sb.append(messageId == null ? "" : messageId);
		sb.append("</messageId>");
		sb.append(BR);
		sb.append("</header>");
		sb.append(BR);

		sb.append("<body>");
		sb.append(BR);
		sb.append("<mobile>");
		sb.append(mobile == null ? "" : mobile);
		sb.append("</mobile>");
		sb.append(BR);
		sb.append("</body>");
		sb.append(BR);

		sb.append("</request>");
		sb.append(BR);
		return sb.toString();
	}

	public static String getSynchroPersonalCardRequestNew(String fromid,
			String imsi, String imei, String token, String messageId,
			ArrayList<UserCard> listCard) {
		String signatureValue = "fromid:" + fromid + ",imsi:" + imsi + ",imei:"
				+ imei + ",token:" + token;
		StringBuilder sb = new StringBuilder(MESSAGE_HEAD + BR);
		sb.append("<request>");
		sb.append(BR);

		sb.append("<header>");
		sb.append(BR);
		sb.append("<signature>");
		sb.append(signatureValue);
		sb.append("</signature>");
		sb.append(BR);
		sb.append("<messageId>");
		sb.append(messageId == null ? "" : messageId);
		sb.append("</messageId>");
		sb.append(BR);
		sb.append("</header>");
		sb.append(BR);

		sb.append("<body>");
		sb.append(BR);
		sb.append("<target>");

		// JSONArray jsonArrMedia = new JSONArray();
		// int len = listCard.size();
		// for (int i = 0; i < len; i++) {
		// JSONObject jsonCon = new JSONObject();
		// jsonCon.put("moblie", listCard.get(i).getMoblie());
		// jsonCon.put("version", listCard.get(i).getVersion());
		// jsonArrMedia.put(i,jsonCon);
		// }
		String target = getUserCard(listCard);// jsonArrMedia.toString();
		sb.append(target == null ? "" : target);
		sb.append("</target>");
		sb.append(BR);
		sb.append("</body>");
		sb.append(BR);

		sb.append("</request>");
		sb.append(BR);
		return sb.toString();
	}

	public static String getUploadRelation(String fromid, String imsi,
			String imei, String token, String messageId, String id, int type,
			ArrayList<UserCard> listCard) {
		String signatureValue = "fromid:" + fromid + ",imsi:" + imsi + ",imei:"
				+ imei + ",token:" + token;

		String to = "type:" + type + ",id:" + id;

		StringBuilder sb = new StringBuilder(MESSAGE_HEAD + BR);
		sb.append("<request>");
		sb.append(BR);

		sb.append("<header>");
		sb.append(BR);
		sb.append("<signature>");
		sb.append(signatureValue);
		sb.append("</signature>");
		sb.append(BR);
		sb.append("<messageId>");
		sb.append(messageId == null ? "" : messageId);
		sb.append("</messageId>");
		sb.append(BR);
		sb.append("</header>");
		sb.append(BR);

		sb.append("<body>");

		sb.append(BR);
		sb.append("<to>");
		sb.append(to == null ? "" : to);
		sb.append("</to>");

		sb.append(BR);
		sb.append("<user>");
		String user = getUserCardName(listCard);// jsonArrMedia.toString();
		sb.append(user == null ? "" : user);
		sb.append("</user>");

		sb.append(BR);
		sb.append("</body>");
		sb.append(BR);

		sb.append("</request>");
		sb.append(BR);
		return sb.toString();
	}

	/**
	 * 1.18 调整封面名片顺序
	 * 
	 * @return
	 */

	public static String updateMediaCardDetail(String fromid, String imsi,
			String imei, String token, String messageId,
			ArrayList<MediaCardDetail> listDetail) {

		String signatureValue = "fromid:" + fromid + ",imsi:" + imsi + ",imei:"
				+ imei + ",token:" + token;

		String content = listDetailToJsonString(listDetail);

		StringBuilder sb = new StringBuilder(MESSAGE_HEAD + BR);
		sb.append("<request>");
		sb.append(BR);

		sb.append("<header>");
		sb.append(BR);
		sb.append("<signature>");
		sb.append(signatureValue);
		sb.append("</signature>");
		sb.append(BR);
		sb.append("<messageId>");
		sb.append(messageId == null ? "" : messageId);
		sb.append("</messageId>");
		sb.append(BR);
		sb.append("</header>");
		sb.append(BR);

		sb.append("<body>");
		sb.append(BR);
		sb.append("<content>");
		sb.append(content);
		sb.append("</content>");
		sb.append(BR);
		sb.append("</body>");
		sb.append(BR);

		sb.append("</request>");
		sb.append(BR);
		return sb.toString();

	}

	private static String listDetailToJsonString(
			ArrayList<MediaCardDetail> listDetail) {
		int len = listDetail.size();

		StringBuilder sbb = new StringBuilder();
		sbb.append("[");
		for (int i = 0; i < len; i++) {
			sbb.append("{\"mediaId\":");
			sbb.append("\"");
			sbb.append(listDetail.get(i).getMediaId());
			sbb.append("\",");
			sbb.append("\"mediaDetail\":");
			sbb.append("{\"");
			// sbb.append(listDetail.get(i).getVersion());

			sbb.append("X\":\"");
			sbb.append(listDetail.get(i).getX());
			sbb.append("\",");

			sbb.append("\"Y\":\"");
			sbb.append(listDetail.get(i).getY());
			sbb.append("\",");

			sbb.append("\"sequence\":\"");
			sbb.append(listDetail.get(i).getSequence());

			sbb.append("\"}}");
			if (i == (len - 1)) {
				// do nothing
			} else {
				sbb.append(",");
			}
		}

		sbb.append("]");
		String content = sbb.toString();
		return content;
	}

	public static String deleteRelationUser(String fromid, String imsi,
			String imei, String token, String messageId, String id, int type,
			String user) {
		String signatureValue = "fromid:" + fromid + ",imsi:" + imsi + ",imei:"
				+ imei + ",token:" + token;

		String to = "type:" + type + ",id:" + id;

		StringBuilder sb = new StringBuilder(MESSAGE_HEAD + BR);
		sb.append("<request>");
		sb.append(BR);

		sb.append("<header>");
		sb.append(BR);
		sb.append("<signature>");
		sb.append(signatureValue);
		sb.append("</signature>");
		sb.append(BR);
		sb.append("<messageId>");
		sb.append(messageId == null ? "" : messageId);
		sb.append("</messageId>");
		sb.append(BR);
		sb.append("</header>");
		sb.append(BR);

		sb.append("<body>");

		sb.append(BR);
		sb.append("<to>");
		sb.append(to == null ? "" : to);
		sb.append("</to>");

		sb.append(BR);
		sb.append("<user>");
		sb.append(user == null ? "" : user);
		sb.append("</user>");

		sb.append(BR);
		sb.append("</body>");
		sb.append(BR);

		sb.append("</request>");
		sb.append(BR);
		return sb.toString();
	}

	public static String modifyRelationUser(String fromid, String imsi,
			String imei, String token, String messageId, String id, int type,
			ArrayList<UserCard> listCard) {
		String signatureValue = "fromid:" + fromid + ",imsi:" + imsi + ",imei:"
				+ imei + ",token:" + token;

		String to = "type:" + type + ",id:" + id;

		StringBuilder sb = new StringBuilder(MESSAGE_HEAD + BR);
		sb.append("<request>");
		sb.append(BR);

		sb.append("<header>");
		sb.append(BR);
		sb.append("<signature>");
		sb.append(signatureValue);
		sb.append("</signature>");
		sb.append(BR);
		sb.append("<messageId>");
		sb.append(messageId == null ? "" : messageId);
		sb.append("</messageId>");
		sb.append(BR);
		sb.append("</header>");
		sb.append(BR);

		sb.append("<body>");

		sb.append(BR);
		sb.append("<to>");
		sb.append(to == null ? "" : to);
		sb.append("</to>");

		sb.append(BR);
		sb.append("<user>");
		String user = getUserCardMobs(listCard);// jsonArrMedia.toString();
		sb.append(user == null ? "" : user);
		sb.append("</user>");

		sb.append(BR);
		sb.append("</body>");
		sb.append(BR);

		sb.append("</request>");
		sb.append(BR);
		return sb.toString();
	}

	private static String getUserCard(ArrayList<UserCard> listCard) {
		int len = listCard.size();

		StringBuilder sbb = new StringBuilder();
		sbb.append("[");
		for (int i = 0; i < len; i++) {
			sbb.append("{\"moblie\":");
			sbb.append("\"");
			sbb.append(listCard.get(i).getMoblie());
			sbb.append("\",");
			sbb.append("\"version\":");
			sbb.append("\"");
			sbb.append(listCard.get(i).getVersion());
			sbb.append("\"}");
			if (i == (len - 1)) {
				// do nothing
			} else {
				sbb.append(",");
			}
		}

		sbb.append("]");
		String content = sbb.toString();
		return content;
	}

	private static String getUserCardMobs(ArrayList<UserCard> listCard) {
		int len = listCard.size();

		StringBuilder sbb = new StringBuilder();
		sbb.append("[");
		for (int i = 0; i < len; i++) {
			sbb.append("{\"oriMobile\":");
			sbb.append("\"");
			sbb.append(listCard.get(i).getOriMobile());
			sbb.append("\",");
			sbb.append("\"moblie\":");
			sbb.append("\"");
			sbb.append(listCard.get(i).getMoblie());
			sbb.append("\",");
			sbb.append("\"name\":");
			sbb.append("\"");
			sbb.append(listCard.get(i).getName());
			sbb.append("\"}");
			if (i == (len - 1)) {
				// do nothing
			} else {
				sbb.append(",");
			}
		}

		sbb.append("]");
		String content = sbb.toString();
		return content;
	}

	private static String getUserCardName(ArrayList<UserCard> listCard) {
		int len = listCard.size();

		StringBuilder sbb = new StringBuilder();
		sbb.append("[");
		for (int i = 0; i < len; i++) {
			sbb.append("{\"moblie\":");
			sbb.append("\"");
			sbb.append(listCard.get(i).getMoblie());
			sbb.append("\",");
			sbb.append("\"name\":");
			sbb.append("\"");
			sbb.append(listCard.get(i).getName());
			sbb.append("\"}");
			if (i == (len - 1)) {
				// do nothing
			} else {
				sbb.append(",");
			}
		}

		sbb.append("]");
		String content = sbb.toString();
		return content;
	}

	/**
	 * 目的地，包括目的地id和类型，格式为：type:TYPE,id:ID。 id：跟类型相对应，可为群组号、企业编号、个人手机号码、分类ID、资产ID
	 * type： 0：公开 1：群组 2：企业 3：个人主页 4：企业主页 5：分类主页 6：资产主页
	 * 
	 * @return type:TYPE,id:ID
	 */
	private static String getToList(String id, int type) {
		String to = "[{\"type\":\"" + type + "\",\"id\":" + id + "\"}]";
		return to;
	}

	/**
	 * 1.14 获取头像媒体ID
	 * 
	 * @param fromid
	 * @param imsi
	 * @param imei
	 * @param token
	 * @param messageId
	 * @param to
	 *            目的地，包括目的地id和类型，格式为：type:TYPE,id:ID。
	 *            id：跟类型相对应，可为群组号、企业编号、个人手机号码、分类ID、资产ID type： 0：公开 1：群组 2：企业
	 *            3：个人主页 4：企业主页 5：分类主页 6：资产主页
	 *            说明：此处以json格式表示，可以支持获取多个目标的头像，最多20个，格式如下： [
	 *            {“type”:”TYPE1”,”id”:”ID1”}, {“type”:”TYPE2”,”id”:”ID2”} ]
	 * 
	 * @return
	 */
	public static String getHeadMediaId(String fromid, String imsi,
			String imei, String token, String messageId, String id, int type) {
		String signatureValue = "fromid:" + fromid + ",imsi:" + imsi + ",imei:"
				+ imei + ",token:" + token;

		String to = getToList(id, type);

		StringBuilder sb = new StringBuilder(MESSAGE_HEAD + BR);
		sb.append("<request>");
		sb.append(BR);

		sb.append("<header>");
		sb.append(BR);
		sb.append("<signature>");
		sb.append(signatureValue);
		sb.append("</signature>");
		sb.append(BR);
		sb.append("<messageId>");
		sb.append(messageId == null ? "" : messageId);
		sb.append("</messageId>");
		sb.append(BR);
		sb.append("</header>");
		sb.append(BR);

		sb.append("<body>");
		sb.append(BR);
		sb.append("<to>");
		sb.append(to == null ? "" : to);
		sb.append("</to>");
		sb.append(BR);
		sb.append("</body>");
		sb.append(BR);

		sb.append("</request>");
		sb.append(BR);
		return sb.toString();
	}

	public static String getEditCompanyCardRequest(String fromid, String imsi,
			String imei, String token, String messageId, String companyCode,
			String companyId, String introduction, String address,
			String phone, String homepage) {
		String signatureValue = "fromid:" + fromid + ",imsi:" + imsi + ",imei:"
				+ imei + ",token:" + token;
		StringBuilder sb = new StringBuilder(MESSAGE_HEAD + BR);
		sb.append("<request>");
		sb.append(BR);

		sb.append("<header>");
		sb.append(BR);
		sb.append("<signature>");
		sb.append(signatureValue);
		sb.append("</signature>");
		sb.append(BR);
		sb.append("<messageId>");
		sb.append(messageId == null ? "" : messageId);
		sb.append("</messageId>");
		sb.append(BR);
		sb.append("</header>");
		sb.append(BR);

		sb.append("<body>");
		sb.append(BR);
		sb.append("<companyCode>");
		sb.append(companyCode == null ? "" : companyCode);
		sb.append("</companyCode>");
		sb.append(BR);
		sb.append("<companyId>");
		sb.append(companyId == null ? "" : companyId);
		sb.append("</companyId>");
		sb.append(BR);
		sb.append("<introduction>");
		sb.append(introduction == null ? "" : introduction);
		sb.append("</introduction>");
		sb.append(BR);
		sb.append("<address>");
		sb.append(address == null ? "" : address);
		sb.append("</address>");
		sb.append(BR);
		sb.append("<phone>");
		sb.append(phone == null ? "" : phone);
		sb.append("</phone>");
		sb.append(BR);
		sb.append("<homepage>");
		sb.append(homepage == null ? "" : homepage);
		sb.append("</homepage>");
		sb.append(BR);
		sb.append("</body>");
		sb.append(BR);

		sb.append("</request>");
		sb.append(BR);
		return sb.toString();
	}

	public static String getSynchroCompanyCardRequest(String fromid,
			String imsi, String imei, String token, String messageId,
			String companyId) {
		String signatureValue = "fromid:" + fromid + ",imsi:" + imsi + ",imei:"
				+ imei + ",token:" + token;
		StringBuilder sb = new StringBuilder(MESSAGE_HEAD + BR);
		sb.append("<request>");
		sb.append(BR);

		sb.append("<header>");
		sb.append(BR);
		sb.append("<signature>");
		sb.append(signatureValue);
		sb.append("</signature>");
		sb.append(BR);
		sb.append("<messageId>");
		sb.append(messageId == null ? "" : messageId);
		sb.append("</messageId>");
		sb.append(BR);
		sb.append("</header>");
		sb.append(BR);

		sb.append("<body>");
		sb.append(BR);
		sb.append("<companyId>");
		sb.append(companyId == null ? "" : companyId);
		sb.append("</companyId>");
		sb.append(BR);
		sb.append("</body>");
		sb.append(BR);

		sb.append("</request>");
		sb.append(BR);
		return sb.toString();
	}

	public static String getQueryInCallCardRequest(String fromid, String imsi,
			String imei, String token, String messageId, String phone) {
		String signatureValue = "fromid:" + fromid + ",imsi:" + imsi + ",imei:"
				+ imei + ",token:" + token;
		StringBuilder sb = new StringBuilder(MESSAGE_HEAD + BR);
		sb.append("<request>");
		sb.append(BR);

		sb.append("<header>");
		sb.append(BR);
		sb.append("<signature>");
		sb.append(signatureValue);
		sb.append("</signature>");
		sb.append(BR);
		sb.append("<messageId>");
		sb.append(messageId == null ? "" : messageId);
		sb.append("</messageId>");
		sb.append(BR);
		sb.append("</header>");
		sb.append(BR);

		sb.append("<body>");
		sb.append(BR);
		sb.append("<phone>");
		sb.append(phone == null ? "" : phone);
		sb.append("</phone>");
		sb.append(BR);
		sb.append("</body>");
		sb.append(BR);

		sb.append("</request>");
		sb.append(BR);
		return sb.toString();
	}

	/**
	 * 删除媒体
	 * 
	 * @param fromid
	 * @param imsi
	 * @param imei
	 * @param token
	 * @param messageId
	 * @param mediaId
	 * @return
	 */
	public static String getDeleteMediaRequest(String fromid, String imsi,
			String imei, String token, String messageId, String mediaId) {
		String signatureValue = "fromid:" + fromid + ",imsi:" + imsi + ",imei:"
				+ imei + ",token:" + token;
		StringBuilder sb = new StringBuilder(MESSAGE_HEAD + BR);
		sb.append("<request>");
		sb.append(BR);

		sb.append("<header>");
		sb.append(BR);
		sb.append("<signature>");
		sb.append(signatureValue);
		sb.append("</signature>");
		sb.append(BR);
		sb.append("<messageId>");
		sb.append(messageId == null ? "" : messageId);
		sb.append("</messageId>");
		sb.append(BR);
		sb.append("</header>");
		sb.append(BR);

		sb.append("<body>");
		sb.append(BR);
		sb.append("<mediaId>");
		sb.append(mediaId == null ? "" : mediaId);
		sb.append("</mediaId>");
		sb.append(BR);
		sb.append("</body>");
		sb.append(BR);

		sb.append("</request>");
		sb.append(BR);
		return sb.toString();
	}

	public static String getSetCoverRequest(String fromid, String imsi,
			String imei, String token, String messageId, String mediaId) {
		String signatureValue = "fromid:" + fromid + ",imsi:" + imsi + ",imei:"
				+ imei + ",token:" + token;
		StringBuilder sb = new StringBuilder(MESSAGE_HEAD + BR);
		sb.append("<request>");
		sb.append(BR);

		sb.append("<header>");
		sb.append(BR);
		sb.append("<signature>");
		sb.append(signatureValue);
		sb.append("</signature>");
		sb.append(BR);
		sb.append("<messageId>");
		sb.append(messageId == null ? "" : messageId);
		sb.append("</messageId>");
		sb.append(BR);
		sb.append("</header>");
		sb.append(BR);

		sb.append("<body>");
		sb.append(BR);
		sb.append("<mediaId>");
		sb.append(mediaId == null ? "" : mediaId);
		sb.append("</mediaId>");
		sb.append(BR);
		sb.append("</body>");
		sb.append(BR);

		sb.append("</request>");
		sb.append(BR);
		return sb.toString();
	}

}
